class Cell {
    constructor(i, j) {
        this.rowIdx = i;
        this.colIdx = j;
        this.value = 0;
    }
}



const Size = 10;

class Board {
    constructor() {
        this.cells = [];
        for (let i = 0; i < Size; ++i) {
            this.cells[i] = [];
            for (let j = 0; j < Size; ++j) {
                this.cells[i].push(new Cell(i, j));
            }
        }
    }

    getResultArr() {
        let arr = [];
        this.cells.forEach((row, idx) => {
            arr[idx] = row.map(c => {
                return c.value;
            });
        });
        return arr;
    }

    emptyCells() {
        let emptys = [];
        this.cells.forEach(row => {
            row.forEach(cell => {
                if (cell.value === 0) {
                    emptys.push(cell);
                }
            });
        });
        return emptys;
    }

    getCell(i, j) {
        return this.cells[i][j];
    }

    // aiEvaluate(cell) {
    //     // 计算cell 这个位置的得分
    //     // 所在行
    //     let minColIdx = clamp(cell.colIdx - 4, 0, Size - 1);
    //     let maxColIdx = clamp(cell.colIdx + 4, 0, Size - 1);
    //
    //     // 计算cell位置的得分
    //     let scores = [];
    //
    //     // 是否存在W(5个连着的)
    //     let valueArr = [];
    //     for (let j = minColIdx; j <= maxColIdx; ++j) {
    //         let c = this.getCell(cell.rowIdx, j);
    //         valueArr.push(c.value);
    //     }
    //
    //     // 通过正则表达式去匹配
    //     // 是否存在 5星连珠
    //     let str = valueArr.join('');
    //     if (/22222/.test(str)) {
    //         return Score.W;
    //     }
    //
    //     // 是否存在活4
    //     if (/022220/.test(str)) {
    //         scores.push(Score.H_4);
    //     }
    //
    //     // 是否存在死4
    //     let regArr = [/022221/, /122220/, /20222/, /22022/, /22202/];
    //     let item = regArr.find(reg => {
    //         return reg.test(str);
    //     });
    //     if (item) {
    //         scores.push(Score.S_4);
    //     }
    //
    //     // 是否存在活3
    //     if (/02220/.test(str)) {
    //         scores.push(Score.H_3);
    //     }
    //
    //     // 是否存在死3
    //     let s3Arr = [/00222/, /22200/, /20022/, /22002/];
    //     let item2 = s3Arr.find(reg => {
    //         return reg.test(str);
    //     });
    //     if (item2) {
    //         scores.push(Score.S_3);
    //     }
    //
    //     // 是否存在活2
    //     let h2Arr = [/02200/, /00220/];
    //     let h2Item = h2Arr.find(reg => {
    //         return reg.test(str)
    //     });
    //     if (h2Item) {
    //         scores.push(Score.H_2);
    //     }
    //
    //     let sum = 0;
    //     scores.forEach(s => {
    //         sum += s;
    //     });
    //     return sum;
    // }


    aiEvaluate(cell){

    }
}


// let Score = {
//     W: 1000000,
//     H_4: 100000,
//     S_4: 50000,
//     H_3: 10000,
//     S_3: 5000,
//     H_2: 1000,
// };


//







